/**
 * Created by Administrator on 2017/4/26.
 */
import React, { Component } from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    View
} from 'react-native';

export default class LifecycleComponent extends Component {
    constructor(props){
        super(props);
        //state 是一个对象
        this.state={
             count:0,
        }
    }


    /**
     * 只调用一次 在初始化渲染执行之前立刻调用
     */
    componentWillMount(){
        console.log("-------componentWillMount--------")
    }

    /**
     * 初始化渲染执行之后立刻调用一次
     */
    componentDidMount(){
        console.log("--------componentDidMount-------")
    }

    /**
     * 在组件收到新的props的时候调用
     * @param nextProps
     */
    componentWillReceiveProps(nextProps){
        console.log("--------componentWillReceiveProps-------")
    }


    /**
     * 接收到新的属性或者state之后 调用
     * @param nextProps
     * @param nextState
     */
    shouldComponentUpdate(nextProps,nextState){
        console.log("------shouldComponentUpdate---------")
        return true;
    }

    /**
     * 接收到新的属性或者state之后
     * shouldComponentUpdate 之后
     * 将要 渲染 之前调用
     * @param nextProps
     * @param nextState
     */
    componentWillUpdate(nextProps,nextState){
        console.log("---------componentWillUpdate------")
    }


    render() {
        console.log("--------render-------")
        return <View>
            <Text>
                我的状态快点改变吧
            </Text>
            <Text style={{fontSize:20,backgroundColor:'red'}}
                  onPress={()=>{
                     this.setState({
                         count:this.state.count+1,
                     });
                  }}
            >我点击了{this.state.count}次</Text>
        </View>
    }


    /**
     * 组件更新已经同步到DOM中
     * @param prevProps
     * @param prevState
     */
    componentDidUpdate(prevProps,prevState){
        console.log("-------componentDidUpdate--------")
    }

    /**
     * 组件将要被移除
     */
    componentWillUnmount(){
        console.log("------componentWillUnmount---------")
    }
}